Data storage systems are widely used in a variety of computing environments. FIG. 1 shows a computer (10) which includes a data storage system (14). Typically, a data storage system includes a mass storage (16), a memory management unit (22), and a CPU memory (24). The central processing unit (CPU) (12) executes software programs and is connected to memory management unit (22) and CPU memory (24) via bus (20).
Memory management unit (22) controls the transfer of data between mass storage (16) and CPU memory (24), and in some instances it may transfer data between central processing unit (12) and mass storage (16). To move data from mass storage (16) to CPU memory (24), memory management unit (22) reads data blocks from mass storage (16) using bus (18) and then writes the data blocks to CPU memory (24) using bus (20). In a similar fashion, memory management unit (22) may move data blocks from CPU memory (24) to mass storage (16) by first reading the data blocks from CPU memory (24) and then writing them to mass storage (16).
Mass storage (16) typically provides a means for storing large quantities of data at relatively low cost per stored data element. One of ordinary skill in the art will realize that mass storage (16) may comprise a hard disk, an array of random access memory (RAM) chips, or other storage media.
CPU memory (24) stores data and program instructions which are used by CPU (12). One of ordinary skill in the art will understand that CPU memory (24) may be a static or cache RAM which resides on the same integrated circuit as CPU (12). The data stored in CPU memory (24) is accessed by CPU (12) across bus (20). CPU memory (24) allows quicker access to stored data than mass storage (16). However, CPU memory (24) is generally small due to the relatively high cost associated with memory capable of short access times. CPU memory (24) is generally not large enough to store all of the data needed by CPU (12) during operation. Thus, either CPU (12) must periodically access data from mass storage (16) through memory management unit (22), or memory management unit (22) must periodically update the contents of CPU memory (24). Since mass storage (16) is slower than CPU memory (24), CPU (12) must insert wait states while accessing data from mass storage (16). The insertion of wait states by CPU (12) decreases the overall performance of computer (10). Additionally, in many situations the amount of time required by memory management unit (22) to load data blocks into CPU memory (24) causes CPU (12) to idle, which also decreases the performance of computer (10).
Therefore, there is a significant need for a data storage system which allows data blocks to be stored in a manner that reduces the overall required size of the memory. There is also a need for a data storage system which reduces the time needed to load data into the memory and reduces the swapping of data blocks between the memory and mass storage.